package link.xieyu.wechat;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.time.LocalDateTime;

import static link.xieyu.wechat.Constant.*;

/**
 * @author xieyu
 */
@Slf4j
public class WechatModule {
    private String url = CURRENT_URL;
    private String accessToken;
    private LocalDateTime timeOut;

    public String getAccessToken() {
        if (accessToken == null || timeOut.isBefore(LocalDateTime.now())) {
            //设置token
            String result =
                    HttpUtil.get(url +
                                         "/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"
                                                 .replace("APPID", APP_ID)
                                                 .replace("APPSECRET", APP_SECRET));
            JSONObject json = JSON.parseObject(result, JSONObject.class);
            String errCode = json.getString("errcode");
            if (errCode != null) {
                log.error("公众号获取出现异常!错误码:{},错误信息:{}", errCode, json.getString("errmsg"));
            }
            accessToken = json.getString("access_token");
            int expires = json.getIntValue("expires_in");
            timeOut = LocalDateTime.now().plusMinutes(expires / 60);
        }
        return accessToken;
    }


}
